<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from fw.tnf on 19 December 2010 -->

<TITLE>FunnelWeb - Grammar</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>FunnelWeb</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_4.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_6.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC35" HREF="fw_toc.html#SEC35">Grammar</A></H1>
<P>
<PRE>
<VAR>input_file</VAR> ::= {<VAR>ordinary_text</VAR> / <VAR>special_sequence</VAR>} .

<VAR>control_sequence</VAR> ::= <SAMP>`@^'</SAMP> <VAR>char_spec</VAR> .

<VAR>char_spec</VAR> ::= <VAR>binary</VAR> / <VAR>octal</VAR> / <VAR>decimal</VAR> / <VAR>hexadecimal</VAR> .

<VAR>binary</VAR> ::= (<SAMP>`b'</SAMP> / <SAMP>`B'</SAMP>) <SAMP>`('</SAMP> {<VAR>binary_digit</VAR>}8 <SAMP>`)'</SAMP> .

<VAR>octal</VAR> ::= (<SAMP>`o'</SAMP> / <SAMP>`O'</SAMP> / <SAMP>`q'</SAMP> / <SAMP>`Q'</SAMP>) <SAMP>`('</SAMP> {<VAR>octal_digit</VAR>}3 <SAMP>`)'</SAMP> .

<VAR>decimal</VAR> ::= (<SAMP>`d'</SAMP> / <SAMP>`D'</SAMP>) <SAMP>`('</SAMP> {<VAR>decimal_digit</VAR>}3 <SAMP>`)'</SAMP> .

<VAR>hexadecimal</VAR> ::= (<SAMP>`h'</SAMP> / <SAMP>`H'</SAMP> / <SAMP>`x'</SAMP> / <SAMP>`X'</SAMP>) <SAMP>`('</SAMP> {<VAR>hex_digit</VAR>}2 <SAMP>`)'</SAMP> .

<VAR>binary_digit</VAR> ::= <SAMP>`0'</SAMP> / <SAMP>`1'</SAMP> .

<VAR>octal_digit</VAR> ::= <VAR>binary_digit</VAR> / <SAMP>`2'</SAMP> / <SAMP>`3'</SAMP> / <SAMP>`4'</SAMP> / <SAMP>`5'</SAMP> / <SAMP>`6'</SAMP> / <SAMP>`7'</SAMP> .

<VAR>decimal_digit</VAR> ::= <VAR>octal_digit</VAR> / <SAMP>`8'</SAMP> / <SAMP>`9'</SAMP> .

<VAR>hex_digit</VAR> ::= <VAR>decimal_digit</VAR> / <SAMP>`A'</SAMP> / <SAMP>`B'</SAMP> / <SAMP>`C'</SAMP> / <SAMP>`D'</SAMP> / <SAMP>`E'</SAMP> / <SAMP>`F'</SAMP> /
                       <SAMP>`a'</SAMP> / <SAMP>`b'</SAMP> / <SAMP>`c'</SAMP> / <SAMP>`d'</SAMP> / <SAMP>`e'</SAMP> / <SAMP>`f'</SAMP> .

<VAR>quick_name</VAR> ::= <SAMP>`@#'</SAMP> <VAR>non_space_printable</VAR> .

<VAR>pragma</VAR> ::= <VAR>pragma_indent</VAR> / <VAR>pragma_mill</VAR> / <VAR>pragma_moll</VAR> / 
                            <VAR>pragma_typesetter</VAR> .

<VAR>s</VAR> ::= {<SAMP>` '</SAMP>}+ .

<VAR>ps</VAR> ::= (<SAMP>`@p'</SAMP> / <SAMP>`@P'</SAMP>) <SAMP>` '</SAMP> .

<VAR>number</VAR> ::= { <VAR>decimal_digit</VAR> }+ .

<VAR>numorinf</VAR> ::= <VAR>number</VAR> / <SAMP>`infinity'</SAMP> .

<VAR>pragma_indent</VAR> ::= <VAR>ps</VAR> <SAMP>`indentation'</SAMP> <VAR>s</VAR> <SAMP>`='</SAMP> <VAR>s</VAR> (<SAMP>`blank'</SAMP> / <SAMP>`none'</SAMP>) .

<VAR>pragma_mill</VAR> ::= <VAR>ps</VAR> <SAMP>`maximum_input_line_length'</SAMP> <VAR>s</VAR> <SAMP>`='</SAMP> <VAR>s</VAR> <VAR>numorinf</VAR> .

<VAR>pragma_moll</VAR> ::= <VAR>ps</VAR> <SAMP>`maximum_output_line_length'</SAMP> <VAR>s</VAR> <SAMP>`='</SAMP> <VAR>s</VAR> <VAR>numorinf</VAR> .

<VAR>pragma_typesetter</VAR> ::= <VAR>ps</VAR> <SAMP>`typesetter'</SAMP> <VAR>s</VAR> <SAMP>`='</SAMP> <VAR>s</VAR> (<SAMP>`none'</SAMP> / <SAMP>`tex'</SAMP> / <SAMP>`texinfo'</SAMP>).

<VAR>ftd</VAR> ::= <VAR>ftd_newpage</VAR> / <VAR>ftd_toc</VAR> / <VAR>ftd_vskip</VAR> / <VAR>ftd_title</VAR> .

<VAR>ts</VAR> ::= <SAMP>`@t '</SAMP> .

<VAR>ftd_newpage</VAR> ::= <VAR>ts</VAR> <SAMP>`new_page'</SAMP> .

<VAR>ftd_toc</VAR> ::= <VAR>ts</VAR> <SAMP>`table_of_contents'</SAMP> .

<VAR>ftd_vskip</VAR> ::= <VAR>ts</VAR> <SAMP>`vskip'</SAMP> <VAR>s</VAR> <VAR>number</VAR> <VAR>s</VAR> <SAMP>`mm'</SAMP> .

<VAR>ftd_title</VAR> ::= <VAR>ts</VAR> <SAMP>`title'</SAMP> <VAR>s</VAR> <VAR>font</VAR> <VAR>s</VAR> <VAR>alignment</VAR> <VAR>text</VAR> .

<VAR>font</VAR> ::= <SAMP>`normalfont'</SAMP> / <SAMP>`titlefont'</SAMP> / <SAMP>`smalltitlefont'</SAMP> .

<VAR>alignment</VAR> ::= <SAMP>`left'</SAMP> / <SAMP>`centre'</SAMP> / <SAMP>`right'</SAMP> .

<VAR>text</VAR> ::= <SAMP>`"'</SAMP> {<VAR>printable_char</VAR>} <SAMP>`"'</SAMP> .

<VAR>input_file</VAR> ::= {<VAR>text</VAR> / <VAR>macro</VAR> / <VAR>directive</VAR>} .

<VAR>free_text</VAR> ::= <VAR>ordinary_text</VAR> .

<VAR>ordinary_text</VAR> ::= {<VAR>ordinary_char</VAR> / <VAR>eol</VAR> / <VAR>text_special</VAR>}+ .

<VAR>text_special</VAR> ::= <SAMP>`@+'</SAMP> / <SAMP>`@@'</SAMP> / <SAMP>`@^'</SAMP> <VAR>char_spec</VAR> .

<VAR>ordinary_char</VAR> ::= <SAMP>` '</SAMP>..<SAMP>`~'</SAMP>-<VAR>special</VAR> .

<VAR>directive</VAR> ::= <VAR>ftd</VAR> / <VAR>itd</VAR> .

<VAR>itd</VAR> ::= <VAR>section</VAR> / <VAR>literal</VAR> / <VAR>emphasis</VAR> .

<VAR>section</VAR> ::= <SAMP>`@'</SAMP> <VAR>levelchar</VAR> [<VAR>name</VAR>] .

<VAR>levelchar</VAR> ::= <SAMP>`A'</SAMP> / <SAMP>`B'</SAMP> / <SAMP>`C'</SAMP> / <SAMP>`D'</SAMP> / <SAMP>`E'</SAMP> /
                            <SAMP>`a'</SAMP> / <SAMP>`b'</SAMP> / <SAMP>`c'</SAMP> / <SAMP>`d'</SAMP> / <SAMP>`e'</SAMP> .

<VAR>literal</VAR> ::= <SAMP>`@{'</SAMP> <VAR>ordinary_text</VAR> <SAMP>`@}'</SAMP> .

<VAR>emphasise</VAR> ::= <SAMP>`@/'</SAMP> <VAR>ordinary_text</VAR> <SAMP>`@/'</SAMP> .

<VAR>macro</VAR> ::= (<SAMP>`@O'</SAMP> / <SAMP>`@$'</SAMP>) <VAR>name</VAR> [<VAR>formal_parameter_list</VAR>] .
                            [<SAMP>`@Z'</SAMP>] [<SAMP>`@M'</SAMP>] [<SAMP>`=='</SAMP> / <SAMP>`+='</SAMP>] <SAMP>`@{'</SAMP> <VAR>expression</VAR> <SAMP>`@}'</SAMP> .

<VAR>name</VAR> ::= <SAMP>`@&#60;'</SAMP> <VAR>name_text</VAR> <SAMP>`@&#62;'</SAMP> .

<VAR>name_text</VAR> ::= {<VAR>ordinary_char</VAR> / <VAR>text_special</VAR>} .

<VAR>formal_parameter_list</VAR> ::= <SAMP>`@('</SAMP> <VAR>formal_parameter</VAR> <SAMP>`@)'</SAMP> .

<VAR>formal_parameter</VAR> ::= <SAMP>`@1'</SAMP> / <SAMP>`@2'</SAMP> / <SAMP>`@3'</SAMP> / <SAMP>`@4'</SAMP> / <SAMP>`@5'</SAMP> /
                            <SAMP>`@6'</SAMP> / <SAMP>`@7'</SAMP> / <SAMP>`@8'</SAMP> / <SAMP>`@9'</SAMP> .

<VAR>expression</VAR> ::= {<VAR>ordinary_text</VAR> / <VAR>macro_call</VAR> / <VAR>formal_parameter</VAR>} .

<VAR>macro_call</VAR> ::= <VAR>name</VAR> [<VAR>actual_parameter_list</VAR>] .

<VAR>actual_parameter_list</VAR> ::= <SAMP>`@('</SAMP> <VAR>actpar</VAR> { <SAMP>`@,'</SAMP> <VAR>actpar</VAR> } <SAMP>`@)'</SAMP> .

<VAR>actpar</VAR> ::= <VAR>expression</VAR> /
                            ( <VAR>whitespace</VAR> <SAMP>`@"'</SAMP> <VAR>expression</VAR> <SAMP>`@"'</SAMP> <VAR>whitespace</VAR> ) .

<VAR>whitespace</VAR> ::= {<SAMP>` '</SAMP> / <VAR>eol</VAR>} .
</PRE>
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_4.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_6.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="fw_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
